-- [tsx]: init.tsx
local ____lualib = require("lualib_bundle") -- 1
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign -- 1
local __TS__New = ____lualib.__TS__New -- 1
local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf -- 1
local ____exports = {} -- 1
local Game, act_zero, act_one, act_two, act_three, act_end -- 1
local ____DoraX = require("DoraX") -- 1
local React = ____DoraX.React -- 1
local toNode = ____DoraX.toNode -- 1
local ____Dora = require("Dora") -- 2
local Director = ____Dora.Director -- 2
local Node = ____Dora.Node -- 2
local Sprite = ____Dora.Sprite -- 2
local Size = ____Dora.Size -- 2
local App = ____Dora.App -- 2
local Vec2 = ____Dora.Vec2 -- 2
local View = ____Dora.View -- 2
local tolua = ____Dora.tolua -- 2
local Label = ____Dora.Label -- 2
local Color = ____Dora.Color -- 2
local sleep = ____Dora.sleep -- 2
local wait = ____Dora.wait -- 2
local threadLoop = ____Dora.threadLoop -- 2
local ____Button = require("Script.UI.Button") -- 3
local Button = ____Button.Button -- 3
local ____Dora = require("Dora") -- 4
local thread = ____Dora.thread -- 4
local Audio = ____Dora.Audio -- 4
local ____SaveManager = require("Script.SaveManager") -- 5
local SaveManager = ____SaveManager.SaveManager -- 5
local ____Animation = require("Script.Animation.Animation") -- 6
local playAnimation = ____Animation.playAnimation -- 6
local ____config = require("Script.config") -- 7
local designSize = ____config.designSize -- 7
local winsize = ____config.winsize -- 7
local fontName = ____config.fontName -- 7
local appState = ____config.appState -- 7
local Illustration = ____config.Illustration -- 7
local defaultnpcprops = ____config.defaultnpcprops -- 7
local ____InputManager = require("InputManager") -- 8
local CreateManager = ____InputManager.CreateManager -- 8
local GamePad = ____InputManager.GamePad -- 8
local Trigger = ____InputManager.Trigger -- 8
local ____Transition = require("Script.Animation.Transition") -- 9
local Transition = ____Transition.Transition -- 9
local ____Dialog = require("Script.Dialog") -- 10
local Dialog = ____Dialog.Dialog -- 10
local nowslot = 0 -- 12
local nowpage = 0 -- 13
local gamestarttime = 0 -- 14
local canskip = false -- 15
local skip = false -- 16
local player_state = {A = 0, D = 0, B = 0, TAB = 0} -- 17
local laststate = {A = 0, D = 0, B = 0, TAB = 0} -- 23
laststate = __TS__ObjectAssign({}, player_state) -- 30
local canmove = false -- 31
local walkspeed = 8 -- 32
local function Pressed(keyName, buttonName) -- 35
	return Trigger.Selector({ -- 36
		Trigger.KeyPressed(keyName), -- 37
		Trigger.ButtonPressed(buttonName) -- 38
	}) -- 38
end -- 35
local inputManager = CreateManager({ -- 42
	Game = { -- 43
		Up = Trigger.Selector({ -- 44
			Pressed("W", "dpup"), -- 44
			Trigger.KeyPressed("Up") -- 44
		}), -- 44
		Down = Trigger.Selector({ -- 45
			Pressed("S", "dpdown"), -- 45
			Trigger.KeyPressed("Down") -- 45
		}), -- 45
		LeftDown = Trigger.Selector({ -- 46
			Trigger.KeyDown("Left"), -- 46
			Trigger.KeyDown("A") -- 46
		}), -- 46
		RightDown = Trigger.Selector({ -- 47
			Trigger.KeyDown("Right"), -- 47
			Trigger.KeyDown("D") -- 47
		}), -- 47
		LeftUp = Trigger.Selector({ -- 48
			Trigger.KeyUp("Left"), -- 48
			Trigger.KeyUp("A") -- 48
		}), -- 48
		RightUp = Trigger.Selector({ -- 49
			Trigger.KeyUp("Right"), -- 49
			Trigger.KeyUp("D") -- 49
		}), -- 49
		EDown = Trigger.Selector({Trigger.KeyDown("E")}), -- 50
		EUp = Trigger.Selector({Trigger.KeyUp("E")}), -- 51
		Space = Trigger.Selector({Trigger.KeyDown("Space")}), -- 52
		Esc = Trigger.Selector({Trigger.KeyDown("Escape")}) -- 53
	}, -- 53
	UI = {Start = Trigger.Selector({ -- 55
		Trigger.KeyDown("Return"), -- 57
		Trigger.ButtonDown("start") -- 58
	})} -- 58
}) -- 58
inputManager:getNode():addTo(Director.ui) -- 63
local ____opt_0 = toNode(React.createElement(GamePad, { -- 63
	inputManager = inputManager, -- 63
	noLeftStick = true, -- 63
	noRightStick = true, -- 63
	noButtonPad = true, -- 63
	noTriggerPad = true, -- 63
	noControlPad = true, -- 63
	noDPad = true -- 63
})) -- 63
if ____opt_0 ~= nil then -- 63
	____opt_0:addTo(Director.ui) -- 65
end -- 65
local function updateViewSize() -- 70
	local camera = tolua.cast(Director.currentCamera, "Camera2D") -- 71
	if camera then -- 71
		camera.zoom = math.min(View.size.height / designSize.height, View.size.width / designSize.width) -- 73
	end -- 73
end -- 70
local function adjustWinSize() -- 78
	App.winSize = winsize -- 79
end -- 78
local file_num = 4 -- 83
local saveManager = __TS__New(SaveManager) -- 84
local savefiles = saveManager:getAllSaves(file_num) -- 85
local savefile = savefiles[1] -- 86
local npcprops = defaultnpcprops -- 87
local function initnpcvisible() -- 88
	npcprops = defaultnpcprops -- 89
end -- 88
initnpcvisible() -- 91
local resources = {textures = {}, models = {}, sounds = {["end"] = "Audio/twilight.mp3", back = "Audio/loop.mp3"}} -- 94
Audio:playStream(resources.sounds.back, true) -- 103
local function StartUp() -- 106
	local root -- 106
	nowpage = 0 -- 107
	inputManager:popContext() -- 108
	inputManager:pushContext("UI") -- 109
	local buttonWidth = 312 - 20 -- 110
	local buttonHeight = 124 - 20 -- 111
	local buttonx = 0 -- 112
	local temp = 7 -- 113
	local buttony = {designSize.height / temp * 3 - designSize.height / 2 - 20, designSize.height / temp * 1.5 - designSize.height / 2 - 20} -- 114
	savefiles = saveManager:getAllSaves(file_num) -- 118
	savefile = savefiles[1] -- 119
	local function newGameClick(switched, tag) -- 121
		if appState.isCGing then -- 121
			return -- 122
		end -- 122
		savefile = saveManager:createDefaultSave() -- 123
		initnpcvisible() -- 124
		appState.isCGing = true -- 125
		Transition({root = Director.entry, time = 1.5, type = 1, waittime = 0.7}) -- 126
		appState.isCGing = false -- 132
		root:cleanup() -- 133
		root:removeAllChildren() -- 134
		root:removeFromParent() -- 135
		Game() -- 136
	end -- 121
	local function exitClick(switched, tag) -- 139
		if appState.isCGing then -- 139
			return -- 140
		end -- 140
		appState.isCGing = true -- 141
		Transition({root = Director.entry, time = 1, type = -1, waittime = 1}) -- 142
		App:shutdown() -- 148
	end -- 139
	root = Node() -- 152
	local background = Sprite("Image/部件/beijing.png") or Sprite() -- 153
	background.position = Vec2(0, 0) -- 154
	root:addChild(background) -- 155
	local title = Sprite("Image/部件/biaoti.png") or Sprite() -- 156
	title.position = Vec2(0, 180) -- 157
	root:addChild(title) -- 158
	local bt1 = Button({ -- 161
		x = buttonx, -- 162
		y = buttony[1], -- 163
		width = buttonWidth, -- 164
		height = buttonHeight, -- 165
		onClick = newGameClick, -- 166
		normalImage = "Image/部件/kaishi.png", -- 167
		pressImage = "Image/部件/kaishi.png" -- 168
	}) -- 168
	local bt2 = Button({ -- 173
		x = buttonx, -- 174
		y = buttony[2], -- 175
		width = buttonWidth, -- 176
		height = buttonHeight, -- 177
		onClick = exitClick, -- 178
		normalImage = "Image/部件/jieshu.png", -- 179
		pressImage = "Image/部件/jieshu.png" -- 180
	}) -- 180
	root:addChild(bt1.node) -- 184
	root:addChild(bt2.node) -- 185
	return root -- 187
end -- 106
Game = function() -- 190
	gamestarttime = App.totalTime -- 192
	inputManager:popContext() -- 193
	inputManager:pushContext("Game") -- 194
	local root = Node() -- 196
	act_zero() -- 198
	return root -- 199
end -- 190
act_zero = function() -- 202
	nowpage = 0 -- 204
	savefile.act = 0 -- 205
	saveManager:saveGame(nowslot, savefile) -- 206
	local root = Node() -- 207
	appState.isCGing = true -- 208
	Transition({root = Director.entry, time = 1, type = -1, waittime = 0}) -- 209
	local function finish(time) -- 215
		savefile.playTime = savefile.playTime + App.totalTime - gamestarttime -- 216
		saveManager:saveGame(nowslot, savefile) -- 217
		thread(function() -- 219
			appState.isCGing = true -- 220
			Transition({root = Director.entry, time = time, type = -1, waittime = 0}) -- 221
			appState.isCGing = false -- 227
			root:cleanup() -- 228
			root:removeAllChildren() -- 229
			root:removeFromParent() -- 230
		end) -- 219
	end -- 215
	thread(function() -- 235
		local eButton = Button({ -- 236
			x = 320, -- 237
			y = 300, -- 238
			width = 80, -- 239
			height = 80, -- 240
			onClick = function() -- 241
				skip = true -- 242
			end, -- 241
			normalImage = "Image/部件/E.png", -- 244
			pressImage = "Image/部件/E.png" -- 245
		}) -- 245
		eButton.node.visible = false -- 247
		local xinzhi = Sprite("Image/第一幕/zhi.png") -- 250
		if xinzhi then -- 250
			xinzhi.size = Size(600, 660) -- 252
			xinzhi:onTapped(function() -- 253
				skip = true -- 254
			end) -- 253
		end -- 253
		local xincontent = Label(fontName, 30) -- 257
		if xincontent then -- 257
			xincontent.text = "    我是云忆，精神研究所所长。\n    我记录下这一切，以防止人们再一次抛弃“桥”。\n    记忆断桥症，是一种会让人遗忘与“桥”相关的一切记忆的病症。\n    它让人类失去了对记忆的掌控。\n    记忆，不再是奔腾的河流，而是断层的云。\n    而我，是那个试图在云中修桥的人。\n    故事发生在一年前。\n    这一切因我而起，也同样，因我而终。" -- 259
			xincontent.textWidth = 500 -- 260
			xincontent.color = Color(4278190080) -- 261
			xincontent.alignment = "Left" -- 262
		end -- 262
		eButton.node.x = 320 -- 264
		eButton.node.y = 300 -- 265
		eButton.node.visible = true -- 266
		sleep(4) -- 268
		eButton.node:gslot( -- 270
			"Input.EDown", -- 270
			function() -- 270
				skip = true -- 271
			end -- 270
		) -- 270
		canskip = true -- 274
		wait(function() -- 275
			sleep(0.1) -- 275
			return skip -- 275
		end) -- 275
		skip = false -- 276
		canskip = false -- 276
		eButton.node:removeFromParent() -- 277
		if xinzhi then -- 277
			xinzhi:removeFromParent() -- 279
		end -- 279
		if xincontent then -- 279
			xincontent:removeFromParent() -- 281
		end -- 281
		local dialognode = Dialog({name = "", illustration = Illustration.wu}) -- 283
		root:addChild(dialognode.node) -- 287
		dialognode.setname("？？？") -- 289
		dialognode.setcontent("所长，您醒了吗？") -- 290
		sleep(1) -- 292
		canskip = true -- 294
		wait(function() -- 295
			return skip -- 296
		end) -- 295
		skip = false -- 298
		canskip = false -- 298
		dialognode.setname("") -- 300
		dialognode.setcontent("————一道声音穿透意识的迷雾抵达耳畔，似乎是个年轻的女声。") -- 301
		sleep(1) -- 303
		canskip = true -- 305
		wait(function() -- 306
			return skip -- 307
		end) -- 306
		skip = false -- 309
		canskip = false -- 309
		dialognode.setname("云忆") -- 311
		dialognode.setcontent("头好晕……果然还是不该勉强自己吗……") -- 312
		sleep(1) -- 314
		canskip = true -- 316
		wait(function() -- 317
			return skip -- 318
		end) -- 317
		skip = false -- 320
		canskip = false -- 320
		dialognode.setname("") -- 322
		dialognode.setcontent("视野逐渐清晰。红发研究员坐在一尘不染的实验桌前，唇角带着惯常的笑。") -- 323
		sleep(1) -- 325
		canskip = true -- 327
		wait(function() -- 328
			return skip -- 329
		end) -- 328
		skip = false -- 331
		canskip = false -- 331
		finish(1) -- 333
		act_one() -- 334
	end) -- 235
	root:gslot( -- 336
		"Input.Space", -- 336
		function() -- 336
			skip = canskip -- 337
		end -- 336
	) -- 336
	root:onTapped(function() -- 339
		skip = canskip -- 340
	end) -- 339
	return root -- 342
end -- 202
act_one = function() -- 345
	nowpage = 1 -- 347
	savefile.act = 1 -- 348
	saveManager:saveGame(nowslot, savefile) -- 349
	local root = Node() -- 350
	appState.isCGing = true -- 351
	Transition({root = Director.entry, time = 1, type = -1, waittime = 0}) -- 352
	local function finish(time) -- 358
		savefile.playTime = savefile.playTime + App.totalTime - gamestarttime -- 359
		saveManager:saveGame(nowslot, savefile) -- 360
		thread(function() -- 362
			appState.isCGing = true -- 363
			Transition({root = Director.entry, time = time, type = -1, waittime = 0}) -- 364
			appState.isCGing = false -- 370
			root:cleanup() -- 371
			root:removeAllChildren() -- 372
			root:removeFromParent() -- 373
		end) -- 362
	end -- 358
	appState.isCGing = false -- 377
	local background = Sprite("Image/第一幕/official/home_back.png") or Sprite() -- 378
	root:addChild(background) -- 379
	local zhujue = Sprite("Image/role/主角.png") or Sprite() -- 380
	zhujue.position = Vec2(100, -75) -- 381
	root:addChild(zhujue) -- 382
	local peijue = Sprite("Image/role/配角.png") or Sprite() -- 383
	peijue.position = Vec2(400, -155) -- 384
	root:addChild(peijue) -- 385
	local zhuozi = Sprite("Image/第一幕/official/home_desk.png") or Sprite() -- 386
	zhuozi.position = Vec2(-50, -10) -- 387
	root:addChild(zhuozi) -- 388
	thread(function() -- 391
		local dialognode = Dialog({name = "", illustration = Illustration.wu}) -- 392
		root:addChild(dialognode.node) -- 396
		dialognode.setname("？？？") -- 398
		dialognode.setcontent("所长，实验感觉如何？") -- 399
		sleep(1) -- 401
		canskip = true -- 403
		wait(function() -- 404
			return skip -- 405
		end) -- 404
		skip = false -- 407
		canskip = false -- 407
		dialognode.setname("") -- 409
		dialognode.setcontent("是墨染，精神连接研究所最年轻的职员，我最得力的助手，她那一头火红的长发比她的名字更令人印象深刻。") -- 410
		sleep(1.5) -- 412
		canskip = true -- 414
		wait(function() -- 415
			return skip -- 416
		end) -- 415
		skip = false -- 418
		canskip = false -- 419
		dialognode.setname("云忆") -- 421
		dialognode.setcontent("很……微妙……算是成功了一半吧，但是……") -- 422
		sleep(1) -- 424
		canskip = true -- 426
		wait(function() -- 427
			return skip -- 428
		end) -- 427
		skip = false -- 430
		canskip = false -- 431
		dialognode.setname("") -- 433
		dialognode.setcontent("奇特的感受。头隐隐作痛，喉咙发紧，像刚从宿醉中醒来一样，似乎有什么很重要的事在不受控制地流逝……") -- 434
		sleep(1.5) -- 436
		canskip = true -- 438
		wait(function() -- 439
			return skip -- 440
		end) -- 439
		skip = false -- 442
		canskip = false -- 443
		dialognode.setname("云忆") -- 445
		dialognode.setcontent("我们的实验目标，是...什么...") -- 446
		sleep(1) -- 448
		canskip = true -- 450
		wait(function() -- 451
			return skip -- 452
		end) -- 451
		skip = false -- 454
		dialognode.setname("墨染") -- 456
		dialognode.setcontent("——嗯？您……忘记了？") -- 457
		sleep(0.6) -- 459
		canskip = true -- 461
		wait(function() -- 462
			return skip -- 463
		end) -- 462
		skip = false -- 465
		canskip = false -- 466
		dialognode.setname("") -- 468
		dialognode.setcontent("即便是一向游刃有余、处变不惊的墨染听到也愣住了，一成不变的笑容出现了一丝裂痕，眼神里是前所未有的震惊。") -- 469
		sleep(1.5) -- 471
		canskip = true -- 473
		wait(function() -- 474
			return skip -- 475
		end) -- 474
		skip = false -- 477
		canskip = false -- 478
		dialognode.setcontent("毕竟，自己的所长在实验中竟然忘记了实验目标，这放在任何实验中应该都是骇人听闻的———") -- 480
		sleep(1.5) -- 482
		canskip = true -- 484
		wait(function() -- 485
			return skip -- 486
		end) -- 485
		skip = false -- 488
		canskip = false -- 489
		dialognode.setname("云忆") -- 491
		dialognode.setcontent("看来，这次实验的后果，比我预想的还要严重……") -- 492
		sleep(1) -- 494
		canskip = true -- 496
		wait(function() -- 497
			return skip -- 498
		end) -- 497
		skip = false -- 500
		canskip = false -- 501
		dialognode.setname("") -- 503
		dialognode.setcontent("———然而我们的实验，也与以往完全不同。") -- 504
		sleep(1) -- 506
		canskip = true -- 508
		wait(function() -- 509
			return skip -- 510
		end) -- 509
		skip = false -- 512
		canskip = false -- 513
		dialognode.setcontent("精神连接实验——用实验者的精神去同步、探测物体，在这个崭新的领域中，什么都有可能发生——") -- 515
		sleep(1.5) -- 517
		canskip = true -- 519
		wait(function() -- 520
			return skip -- 521
		end) -- 520
		skip = false -- 523
		canskip = false -- 524
		dialognode.setname("墨染") -- 526
		dialognode.setcontent("这是我记录的实验报告，恐怕所长您不仅仅是失去记忆那么简单……") -- 527
		sleep(1) -- 529
		canskip = true -- 531
		wait(function() -- 532
			return skip -- 533
		end) -- 532
		skip = false -- 535
		canskip = false -- 536
		dialognode.node.visible = false -- 538
		local eButton = Button({ -- 539
			x = -130, -- 540
			y = -100, -- 541
			width = 80, -- 542
			height = 80, -- 543
			onClick = function() -- 544
				skip = true -- 545
			end, -- 544
			normalImage = "Image/部件/E.png", -- 547
			pressImage = "Image/部件/E.png" -- 548
		}) -- 548
		eButton.node:gslot( -- 550
			"Input.EDown", -- 550
			function() -- 550
				skip = true -- 551
			end -- 550
		) -- 550
		wait(function() -- 553
			sleep(0.1) -- 553
			return skip -- 553
		end) -- 553
		skip = false -- 554
		eButton.node.visible = false -- 555
		local xinzhi = Sprite("Image/第一幕/zhi.png") -- 558
		if xinzhi then -- 558
			xinzhi.size = Size(600, 660) -- 560
			xinzhi:onTapped(function() -- 561
				skip = true -- 562
			end) -- 561
		end -- 561
		local xincontent = Label(fontName, 30) -- 565
		if xincontent then -- 565
			xincontent.text = "                实验日志\n    实验内容：从精神连接层面观测□的存在\n    受试者：云忆（所长）\n    观测者：墨染\n    实验目的：观测□在受试者精神中的形象，并尝试进行接触\n    实验日期：10月27日\n    实验过程：\n    9：00a.m  实验开始，受试者云忆接入精神连接仪。\n    9：20a.m 面部肌肉放松，推测在回忆与□有关的经历\n    9：27a.m 观测到无声唇语\n    9：29a.m 突然呼吸急促，手指痉挛，反复喃喃念着□，遂手动终止连接，实验结束。在仪器停止后，受试者逐渐恢复正常。" -- 567
			xincontent.textWidth = 500 -- 568
			xincontent.color = Color(4278190080) -- 569
			xincontent.alignment = "Left" -- 570
		end -- 570
		eButton.node.x = 320 -- 572
		eButton.node.y = 300 -- 573
		eButton.node.visible = true -- 574
		sleep(5) -- 576
		eButton.node:gslot( -- 578
			"Input.EDown", -- 578
			function() -- 578
				skip = true -- 579
			end -- 578
		) -- 578
		canskip = true -- 582
		wait(function() -- 583
			sleep(0.1) -- 583
			return skip -- 583
		end) -- 583
		skip = false -- 584
		canskip = false -- 584
		eButton.node:removeFromParent() -- 585
		if xinzhi then -- 585
			xinzhi:removeFromParent() -- 587
		end -- 587
		if xincontent then -- 587
			xincontent:removeFromParent() -- 589
		end -- 589
		dialognode.node.visible = true -- 591
		dialognode.setname("") -- 593
		dialognode.setcontent("我的目光停在了一个模糊不清的符号上。") -- 594
		sleep(1) -- 596
		canskip = true -- 598
		wait(function() -- 599
			return skip -- 600
		end) -- 599
		skip = false -- 602
		canskip = false -- 603
		dialognode.setname("云忆") -- 605
		dialognode.setcontent("这个图形……是……一个字吗？") -- 606
		sleep(1) -- 608
		canskip = true -- 610
		wait(function() -- 611
			return skip -- 612
		end) -- 611
		skip = false -- 614
		canskip = false -- 615
		dialognode.setname("墨染") -- 617
		dialognode.setcontent("所长，您不认得‘□’字了吗！") -- 618
		sleep(1) -- 620
		canskip = true -- 622
		wait(function() -- 623
			return skip -- 624
		end) -- 623
		skip = false -- 626
		canskip = false -- 627
		dialognode.setname("") -- 629
		dialognode.setcontent("qiao，墨染似乎是这么发音的，但是我却毫无印象。") -- 630
		sleep(1) -- 632
		canskip = true -- 634
		wait(function() -- 635
			return skip -- 636
		end) -- 635
		skip = false -- 638
		canskip = false -- 639
		dialognode.setcontent("这个字背后的含义、它代表的事物、它的形状……一切与之相关的知识都无迹可寻。有一瞬间，我甚至觉得自己像个文盲。") -- 641
		sleep(2) -- 643
		canskip = true -- 645
		wait(function() -- 646
			return skip -- 647
		end) -- 646
		skip = false -- 649
		canskip = false -- 650
		dialognode.setcontent("真是讽刺，身为所长，却将一个字忘得一干二净。") -- 652
		sleep(1) -- 654
		canskip = true -- 656
		wait(function() -- 657
			return skip -- 658
		end) -- 657
		skip = false -- 660
		canskip = false -- 661
		dialognode.setname("云忆") -- 663
		dialognode.setcontent("看来的确不是简单的失忆，我已经彻底不认识这个字了……") -- 664
		sleep(1) -- 666
		canskip = true -- 668
		wait(function() -- 669
			return skip -- 670
		end) -- 669
		skip = false -- 672
		canskip = false -- 673
		dialognode.setname("墨染") -- 675
		dialognode.setcontent("□是架在空中或水上的通道啊，您的家乡、断□镇，不就是因它而得名的吗？") -- 676
		sleep(1.5) -- 678
		canskip = true -- 680
		wait(function() -- 681
			return skip -- 682
		end) -- 681
		skip = false -- 684
		canskip = false -- 685
		dialognode.setname("云忆") -- 687
		dialognode.setcontent("………………完全没有印象。") -- 688
		sleep(1) -- 690
		canskip = true -- 692
		wait(function() -- 693
			return skip -- 694
		end) -- 693
		skip = false -- 696
		canskip = false -- 697
		dialognode.setname("墨染") -- 699
		dialognode.setcontent("怎么会……不，这不可能！") -- 700
		sleep(1) -- 702
		canskip = true -- 704
		wait(function() -- 705
			return skip -- 706
		end) -- 705
		skip = false -- 708
		canskip = false -- 709
		dialognode.setname("") -- 711
		dialognode.setcontent("我竟然，会对一个字如此束手无策，还是一个与我家乡有关的字……嗯？") -- 712
		sleep(1.5) -- 714
		canskip = true -- 716
		wait(function() -- 717
			return skip -- 718
		end) -- 717
		skip = false -- 720
		canskip = false -- 721
		dialognode.setname("云忆") -- 723
		dialognode.setcontent("既然这个字与我的家乡密不可分——") -- 724
		sleep(1) -- 726
		canskip = true -- 728
		wait(function() -- 729
			return skip -- 730
		end) -- 729
		skip = false -- 732
		canskip = false -- 733
		dialognode.setname("墨染") -- 735
		dialognode.setcontent("不如说您的家乡正是因为□才会存在。") -- 736
		sleep(1) -- 738
		canskip = true -- 740
		wait(function() -- 741
			return skip -- 742
		end) -- 741
		skip = false -- 744
		canskip = false -- 745
		dialognode.setname("") -- 747
		dialognode.setcontent("看来也该久违的回趟家了，回到那个因遗忘了这个字而变得陌生的地方。") -- 748
		sleep(1.5) -- 750
		canskip = true -- 752
		wait(function() -- 753
			return skip -- 754
		end) -- 753
		skip = false -- 756
		canskip = false -- 757
		finish(1) -- 759
		act_two() -- 760
	end) -- 391
	root:gslot( -- 762
		"Input.Space", -- 762
		function() -- 762
			skip = canskip -- 763
		end -- 762
	) -- 762
	root:onTapped(function() -- 765
		skip = canskip -- 766
	end) -- 765
	return root -- 768
end -- 345
act_two = function() -- 771
	local eButton, dialognode, player_node -- 771
	nowpage = 2 -- 773
	local firstdonghua = false -- 774
	if savefile.act ~= 2 then -- 774
		savefile.act = 2 -- 776
		savefile.player_pos = Vec2(490, 210) -- 777
		firstdonghua = true -- 778
	end -- 778
	local guanggaojishu = 0 -- 782
	local animatespeed = 1 / walkspeed -- 783
	local etag = -1 -- 784
	local background = Sprite("Image/第二幕/official/two_left.png") or Sprite() -- 786
	local player_size = Size(145, 340) -- 788
	local min_player_pos = Vec2(player_size.width / 2, 210) -- 789
	local max_player_pos = Vec2(background.width - player_size.width / 2 - 1050, 210) -- 790
	local root = Node() -- 792
	local function finish(time) -- 794
		savefile.playTime = savefile.playTime + App.totalTime - gamestarttime -- 795
		thread(function() -- 796
			appState.isCGing = true -- 797
			Transition({root = Director.entry, time = time, type = -1, waittime = 0}) -- 798
			appState.isCGing = false -- 804
			root:cleanup() -- 805
			root:removeAllChildren() -- 806
			root:removeFromParent() -- 807
		end) -- 796
	end -- 794
	root:addChild(background) -- 811
	local npcs = {} -- 812
	for key, value in pairs(npcprops) do -- 813
		local npc = Node() -- 814
		npc.tag = tostring(value.tag) -- 815
		npc.position = value.pos -- 816
		npc.visible = value.visible -- 817
		background:addChild(npc) -- 818
		npcs[#npcs + 1] = npc -- 819
		playAnimation( -- 820
			npc, -- 820
			value.daiji, -- 820
			0.4, -- 820
			true, -- 820
			false, -- 820
			Size(175, 350) -- 820
		) -- 820
	end -- 820
	local function eClick(switched, tag) -- 823
		if etag ~= -1 then -- 823
			playAnimation( -- 825
				player_node, -- 825
				"Image/scientist", -- 825
				animatespeed, -- 825
				true, -- 825
				true, -- 825
				player_size -- 825
			) -- 825
			player_state.A = 0 -- 826
			player_state.D = 0 -- 826
			eButton.node.visible = false -- 827
		end -- 827
		if etag == npcprops.lajitong.tag then -- 827
			if __TS__ArrayIndexOf(savefile.progress, etag) == -1 then -- 827
				playAnimation( -- 831
					player_node, -- 831
					"Image/daiji", -- 831
					0.4, -- 831
					true, -- 831
					true, -- 831
					player_size -- 831
				) -- 831
				thread(function() -- 832
					canmove = false -- 833
					dialognode.setillustration(Illustration.wu) -- 834
					dialognode.setname("云忆") -- 835
					dialognode.setcontent("唔……河上的究竟是……") -- 836
					dialognode.node.visible = true -- 837
					sleep(1) -- 839
					canskip = true -- 841
					wait(function() -- 842
						return skip -- 843
					end) -- 842
					skip = false -- 845
					canskip = false -- 845
					dialognode.setname("") -- 847
					dialognode.setcontent("脚下的石板被磨得很光滑，石栏底部生着青苔，拱起的弧度很沉着。") -- 848
					sleep(1.5) -- 850
					canskip = true -- 852
					wait(function() -- 853
						return skip -- 854
					end) -- 853
					skip = false -- 856
					canskip = false -- 856
					dialognode.setcontent("视线逐渐上移，弧线在某处毫无征兆地，断了。风拂过缺口，徒留空洞的呜咽。") -- 858
					sleep(1.5) -- 860
					canskip = true -- 862
					wait(function() -- 863
						return skip -- 864
					end) -- 863
					skip = false -- 866
					canskip = false -- 866
					dialognode.setcontent("好熟悉的感觉。") -- 868
					sleep(0.5) -- 870
					canskip = true -- 872
					wait(function() -- 873
						return skip -- 874
					end) -- 873
					skip = false -- 876
					canskip = false -- 876
					dialognode.setcontent("心里像打开了一扇门，但门里一片荒芜。") -- 878
					sleep(1) -- 880
					canskip = true -- 882
					wait(function() -- 883
						return skip -- 884
					end) -- 883
					skip = false -- 886
					canskip = false -- 886
					dialognode.node.visible = false -- 888
					canmove = true -- 889
					max_player_pos = Vec2(background.width - player_size.width / 2 - 550, 210) -- 891
				end) -- 832
			else -- 832
				thread(function() -- 894
					canmove = false -- 895
					playAnimation( -- 896
						player_node, -- 896
						"Image/daiji", -- 896
						0.4, -- 896
						true, -- 896
						true, -- 896
						player_size -- 896
					) -- 896
					dialognode.setillustration(Illustration.wu) -- 897
					dialognode.setname("") -- 898
					dialognode.setcontent("往前走吧，看看对面是什么。") -- 899
					dialognode.node.visible = true -- 901
					sleep(0.5) -- 902
					canskip = true -- 904
					wait(function() -- 905
						return skip -- 906
					end) -- 905
					skip = false -- 908
					canskip = false -- 908
					dialognode.node.visible = false -- 910
					canmove = true -- 911
				end) -- 894
			end -- 894
		elseif etag == npcprops.guanggao1.tag then -- 894
			if guanggaojishu == 0 then -- 894
				thread(function() -- 917
					playAnimation( -- 918
						player_node, -- 918
						"Image/daiji", -- 918
						0.4, -- 918
						true, -- 918
						true, -- 918
						player_size -- 918
					) -- 918
					canmove = false -- 919
					dialognode.setillustration(Illustration.wu) -- 920
					dialognode.setname("") -- 921
					dialognode.setcontent("——镇子比记忆里荒凉太多太多。") -- 922
					dialognode.node.visible = true -- 923
					sleep(0.5) -- 925
					canskip = true -- 927
					wait(function() -- 928
						return skip -- 929
					end) -- 928
					skip = false -- 931
					canskip = false -- 931
					dialognode.setcontent("我模糊的记忆分明是这样的：树的碎影悠悠晃着，一声渺远的船号惊飞白鹭，跃动的光点随着一圈圈水波渐渐远去。") -- 933
					sleep(2) -- 935
					canskip = true -- 937
					wait(function() -- 938
						return skip -- 939
					end) -- 938
					skip = false -- 941
					canskip = false -- 941
					dialognode.setcontent("偶尔起了阵微风，携着草木的清香直入心脾。岸边人来人往，小贩的吆喝声混杂着笑声，尽显热闹……") -- 943
					sleep(2) -- 945
					canskip = true -- 947
					wait(function() -- 948
						return skip -- 949
					end) -- 948
					skip = false -- 951
					canskip = false -- 951
					dialognode.setcontent("还有，河上该有的、被氤氲水汽包裹的……") -- 953
					sleep(1) -- 955
					canskip = true -- 957
					wait(function() -- 958
						return skip -- 959
					end) -- 958
					skip = false -- 961
					canskip = false -- 961
					dialognode.node.visible = false -- 963
					canmove = true -- 964
					max_player_pos = Vec2(background.width - player_size.width / 2 - 900, 210) -- 966
				end) -- 917
			end -- 917
		elseif etag == npcprops.dianxiangan.tag then -- 917
			thread(function() -- 970
				canmove = false -- 971
				playAnimation( -- 972
					player_node, -- 972
					"Image/daiji", -- 972
					0.4, -- 972
					true, -- 972
					true, -- 972
					player_size -- 972
				) -- 972
				dialognode.setillustration(Illustration.wu) -- 973
				dialognode.setname("") -- 974
				dialognode.setcontent("这个啊，最早是木质的。后来洪水冲断过一次，镇子也有了名字，人们聚集起来，修了石质的，人和车都从上面经过。") -- 975
				dialognode.node.visible = true -- 976
				sleep(2) -- 978
				canskip = true -- 980
				wait(function() -- 981
					return skip -- 982
				end) -- 981
				skip = false -- 984
				canskip = false -- 984
				dialognode.setcontent("再后来啊，就塌了，早没人修啦……叫什么来着？唉，算啦算啦……") -- 986
				sleep(1.5) -- 988
				canskip = true -- 990
				wait(function() -- 991
					return skip -- 992
				end) -- 991
				skip = false -- 994
				canskip = false -- 994
				dialognode.setname("云忆") -- 996
				dialognode.setcontent("我想，我该想办法去对面看看。") -- 997
				sleep(1) -- 999
				canskip = true -- 1001
				wait(function() -- 1002
					return skip -- 1003
				end) -- 1002
				skip = false -- 1005
				canskip = false -- 1005
				dialognode.setname("") -- 1007
				dialognode.setcontent("突然，我感到一阵头晕。") -- 1008
				sleep(0.5) -- 1010
				canskip = true -- 1012
				wait(function() -- 1013
					return skip -- 1014
				end) -- 1013
				skip = false -- 1016
				canskip = false -- 1016
				finish(1) -- 1018
				act_three() -- 1019
				local ____savefile_progress_2 = savefile.progress -- 1019
				____savefile_progress_2[#____savefile_progress_2 + 1] = npcprops.dianxiangan.tag -- 1021
			end) -- 970
		end -- 970
	end -- 823
	eButton = Button({ -- 1025
		x = 0, -- 1026
		y = 50, -- 1027
		width = 128, -- 1028
		height = 128, -- 1029
		onClick = eClick, -- 1030
		normalImage = "Image/部件/E.png", -- 1031
		pressImage = "Image/部件/E.png" -- 1032
	}) -- 1032
	eButton.node:gslot( -- 1034
		"Input.EUp", -- 1034
		function() -- 1034
			if eButton.node.visible then -- 1034
				eClick() -- 1036
			end -- 1036
		end -- 1034
	) -- 1034
	eButton.node.visible = false -- 1038
	eButton.node:addTo(root) -- 1039
	local function setbackgroundposition() -- 1041
		background.x = background.width / 2 - designSize.width / 2 - (savefile.player_pos.x - designSize.width / 2 >= 0 and savefile.player_pos.x <= background.width - designSize.width / 2 and savefile.player_pos.x - designSize.width / 2 or (savefile.player_pos.x - designSize.width / 2 < 0 and 0 or background.width - designSize.width)) -- 1042
	end -- 1041
	setbackgroundposition() -- 1044
	dialognode = Dialog({name = "", illustration = Illustration.wu}) -- 1046
	root:addChild(dialognode.node) -- 1050
	dialognode.node.order = 1 -- 1051
	player_node = Node() -- 1053
	player_node:addTo(background) -- 1054
	player_node.position = Vec2(700, 210) -- 1055
	dialognode.node.visible = false -- 1057
	canmove = true -- 1058
	if firstdonghua then -- 1058
		thread(function() -- 1060
			canmove = false -- 1061
			dialognode.node.visible = true -- 1061
			playAnimation( -- 1062
				player_node, -- 1062
				"Image/daiji", -- 1062
				0.4, -- 1062
				true, -- 1062
				true, -- 1062
				player_size -- 1062
			) -- 1062
			dialognode.setcontent("（车门关闭的闷响，引擎声渐远）") -- 1064
			sleep(0.5) -- 1066
			canskip = true -- 1068
			wait(function() -- 1069
				return skip -- 1070
			end) -- 1069
			skip = false -- 1072
			canskip = false -- 1072
			dialognode.setname("云忆") -- 1074
			dialognode.setcontent("……断□镇——熟悉又陌生的名字。先随便转转吧。") -- 1075
			sleep(1) -- 1077
			canskip = true -- 1079
			wait(function() -- 1080
				return skip -- 1081
			end) -- 1080
			skip = false -- 1083
			canskip = false -- 1083
			local zhiying = Label(fontName, 30) -- 1085
			if zhiying then -- 1085
				zhiying.text = "按AD左右移动" -- 1087
				zhiying.color = Color(4278190080) -- 1088
				zhiying:addTo(background) -- 1089
				zhiying.position = Vec2(savefile.player_pos.x, savefile.player_pos.y + 280) -- 1090
				thread(function() -- 1091
					sleep(2) -- 1092
					zhiying:removeFromParent() -- 1093
				end) -- 1091
			end -- 1091
			dialognode.node.visible = false -- 1096
			canmove = true -- 1097
		end) -- 1060
	end -- 1060
	playAnimation( -- 1101
		player_node, -- 1101
		"Image/scientist", -- 1101
		animatespeed, -- 1101
		true, -- 1101
		true, -- 1101
		player_size -- 1101
	) -- 1101
	player_state = {A = 0, D = 0, B = 0, TAB = 0} -- 1102
	laststate = {A = 0, D = 0, B = 0, TAB = 0} -- 1108
	local faceto = true -- 1114
	local tl1 = threadLoop(function() -- 1115
		if laststate ~= player_state then -- 1115
			if laststate.D - laststate.A ~= player_state.D - player_state.A then -- 1115
				if player_state.D - player_state.A == 0 then -- 1115
					playAnimation( -- 1119
						player_node, -- 1119
						"Image/daiji", -- 1119
						animatespeed, -- 1119
						true, -- 1119
						faceto, -- 1119
						player_size -- 1119
					) -- 1119
				elseif player_state.D - player_state.A == -1 then -- 1119
					faceto = false -- 1121
					playAnimation( -- 1122
						player_node, -- 1122
						"Image/scientist", -- 1122
						animatespeed, -- 1122
						true, -- 1122
						false, -- 1122
						player_size -- 1122
					) -- 1122
				elseif player_state.D - player_state.A == 1 then -- 1122
					faceto = true -- 1124
					playAnimation( -- 1125
						player_node, -- 1125
						"Image/scientist", -- 1125
						animatespeed, -- 1125
						true, -- 1125
						true, -- 1125
						player_size -- 1125
					) -- 1125
				end -- 1125
			end -- 1125
			laststate = __TS__ObjectAssign({}, player_state) -- 1129
		end -- 1129
		local evisible = false -- 1131
		if canmove then -- 1131
			for key, value in pairs(npcprops) do -- 1133
				if value.visible and value.tag ~= -1 and savefile.player_pos.x > value.pos.x - value.size / 2 and savefile.player_pos.x < value.pos.x + value.size / 2 then -- 1133
					eButton.node.visible = true -- 1135
					etag = value.tag -- 1136
					evisible = true -- 1137
				end -- 1137
			end -- 1137
			if not evisible then -- 1137
				eButton.node.visible = false -- 1141
				etag = -1 -- 1142
			end -- 1142
		end -- 1142
		sleep(0.2) -- 1145
		return nowpage ~= 2 -- 1146
	end) -- 1115
	local tl2 = threadLoop(function() -- 1148
		savefile.player_pos = savefile.player_pos:add(Vec2((player_state.D - player_state.A) * walkspeed, 0)):clamp(min_player_pos, max_player_pos) -- 1149
		player_node.x = savefile.player_pos.x -- 1152
		setbackgroundposition() -- 1153
		sleep(0.01) -- 1154
		return nowpage ~= 2 -- 1155
	end) -- 1148
	root:gslot( -- 1158
		"Input.Space", -- 1158
		function() -- 1158
			skip = canskip -- 1159
		end -- 1158
	) -- 1158
	root:gslot( -- 1162
		"Input.LeftDown", -- 1162
		function() -- 1162
			if canmove then -- 1162
				player_state.A = 1 -- 1164
			end -- 1164
		end -- 1162
	) -- 1162
	root:gslot( -- 1167
		"Input.RightDown", -- 1167
		function() -- 1167
			if canmove then -- 1167
				player_state.D = 1 -- 1169
			end -- 1169
		end -- 1167
	) -- 1167
	root:gslot( -- 1172
		"Input.LeftUp", -- 1172
		function() -- 1172
			if canmove then -- 1172
				player_state.A = 0 -- 1174
			end -- 1174
		end -- 1172
	) -- 1172
	root:gslot( -- 1177
		"Input.RightUp", -- 1177
		function() -- 1177
			if canmove then -- 1177
				player_state.D = 0 -- 1179
			end -- 1179
		end -- 1177
	) -- 1177
	root:onTapped(function() -- 1182
		skip = canskip -- 1183
	end) -- 1182
	return root -- 1185
end -- 771
act_three = function() -- 1188
	local eButton, dialognode, player_node -- 1188
	nowpage = 3 -- 1190
	savefile.act = 1 -- 1191
	local firstdonghua = false -- 1192
	if savefile.act ~= 2 then -- 1192
		savefile.act = 2 -- 1194
		savefile.player_pos = Vec2(490, 210) -- 1195
	end -- 1195
	saveManager:saveGame(nowslot, savefile) -- 1197
	local animatespeed = 1 / walkspeed -- 1199
	local etag = -1 -- 1200
	local background2 = Sprite("Image/第二幕/official/two_right.png") or Sprite() -- 1202
	local player_size = Size(145, 340) -- 1204
	local min_player_pos = Vec2(player_size.width / 2 + 450, 210) -- 1205
	local max_player_pos = Vec2(background2.width - player_size.width / 2, 210) -- 1206
	local root = Node() -- 1207
	local function finish(time) -- 1209
		savefile.playTime = savefile.playTime + App.totalTime - gamestarttime -- 1210
		saveManager:saveGame(nowslot, savefile) -- 1211
		thread(function() -- 1212
			appState.isCGing = true -- 1213
			Transition({root = Director.entry, time = time, type = -1, waittime = 0}) -- 1214
			appState.isCGing = false -- 1220
			root:cleanup() -- 1221
			root:removeAllChildren() -- 1222
			root:removeFromParent() -- 1223
		end) -- 1212
	end -- 1209
	root:addChild(background2) -- 1227
	local npcs = {} -- 1228
	for key, value in pairs(npcprops) do -- 1229
		local npc = Node() -- 1230
		npc.tag = tostring(value.tag) -- 1231
		npc.position = value.pos -- 1232
		npc.visible = value.visible -- 1233
		background2:addChild(npc) -- 1234
		npcs[#npcs + 1] = npc -- 1235
		playAnimation( -- 1236
			npc, -- 1236
			value.daiji, -- 1236
			0.4, -- 1236
			true, -- 1236
			false, -- 1236
			Size(175, 350) -- 1236
		) -- 1236
	end -- 1236
	npcprops.lajitong.pos = Vec2(12000, 210) -- 1239
	npcprops.guanggao1.pos = Vec2(12000, 210) -- 1240
	npcprops.dianxiangan.pos = Vec2(1500, 210) -- 1241
	local function eClick(switched, tag) -- 1243
		if etag ~= -1 then -- 1243
			playAnimation( -- 1245
				player_node, -- 1245
				"Image/scientist", -- 1245
				animatespeed, -- 1245
				true, -- 1245
				true, -- 1245
				player_size -- 1245
			) -- 1245
			player_state.A = 0 -- 1246
			player_state.D = 0 -- 1246
			eButton.node.visible = false -- 1247
		end -- 1247
		if etag == npcprops.linzhi.tag then -- 1247
			thread(function() -- 1251
				canmove = false -- 1252
				playAnimation( -- 1253
					player_node, -- 1253
					"Image/daiji", -- 1253
					0.4, -- 1253
					true, -- 1253
					true, -- 1253
					player_size -- 1253
				) -- 1253
				dialognode.setillustration(Illustration.wu) -- 1254
				dialognode.node.visible = true -- 1256
				dialognode.setname("") -- 1257
				dialognode.setcontent("这个人是谁？为什么会出现在这里？") -- 1258
				sleep(0.5) -- 1260
				canskip = true -- 1262
				wait(function() -- 1263
					return skip -- 1264
				end) -- 1263
				skip = false -- 1266
				canskip = false -- 1266
				dialognode.setname("？？？") -- 1268
				dialognode.setcontent("云忆。") -- 1269
				sleep(0.5) -- 1271
				canskip = true -- 1273
				wait(function() -- 1274
					return skip -- 1275
				end) -- 1274
				skip = false -- 1277
				canskip = false -- 1277
				dialognode.setname("云忆") -- 1279
				dialognode.setcontent("你是谁？你怎么知道我的名字？") -- 1280
				sleep(1) -- 1282
				canskip = true -- 1284
				wait(function() -- 1285
					return skip -- 1286
				end) -- 1285
				skip = false -- 1288
				canskip = false -- 1288
				dialognode.setname("？？？") -- 1290
				dialognode.setcontent("我是林知，我知道我要帮你。你们的病症叫‘记忆断□症，而我知道你所有关于□的记忆。") -- 1291
				sleep(1.5) -- 1293
				canskip = true -- 1295
				wait(function() -- 1296
					return skip -- 1297
				end) -- 1296
				skip = false -- 1299
				canskip = false -- 1299
				dialognode.setname("") -- 1301
				dialognode.setcontent("熟悉的眩晕感瞬间包围了我，那些曾经如云一般飘散的记忆逐渐向我靠拢。") -- 1302
				sleep(1.5) -- 1304
				canskip = true -- 1306
				wait(function() -- 1307
					return skip -- 1308
				end) -- 1307
				skip = false -- 1310
				canskip = false -- 1310
				finish(1) -- 1312
				act_end() -- 1313
			end) -- 1251
		elseif etag == npcprops.dianxiangan.tag then -- 1251
			thread(function() -- 1317
				canmove = false -- 1318
				dialognode.node.visible = true -- 1318
				playAnimation( -- 1319
					player_node, -- 1319
					"Image/daiji", -- 1319
					0.4, -- 1319
					true, -- 1319
					false, -- 1319
					player_size -- 1319
				) -- 1319
				dialognode.setname("") -- 1321
				dialognode.setcontent("“丁零零——”急促的电话铃声打断了我的思绪。") -- 1322
				sleep(1) -- 1324
				canskip = true -- 1326
				wait(function() -- 1327
					return skip -- 1328
				end) -- 1327
				skip = false -- 1330
				canskip = false -- 1330
				dialognode.setname("墨染") -- 1332
				dialognode.setcontent("所长，所长！你在哪儿？") -- 1333
				sleep(1) -- 1335
				canskip = true -- 1337
				wait(function() -- 1338
					return skip -- 1339
				end) -- 1338
				skip = false -- 1341
				canskip = false -- 1341
				dialognode.setname("") -- 1343
				dialognode.setcontent("她一向平静的声音竟满是惊慌。") -- 1344
				sleep(1) -- 1346
				canskip = true -- 1348
				wait(function() -- 1349
					return skip -- 1350
				end) -- 1349
				skip = false -- 1352
				canskip = false -- 1352
				dialognode.setname("云忆") -- 1354
				dialognode.setcontent("怎么了？我还在——") -- 1355
				sleep(0.5) -- 1357
				canskip = true -- 1359
				wait(function() -- 1360
					return skip -- 1361
				end) -- 1360
				skip = false -- 1363
				canskip = false -- 1363
				dialognode.setname("墨染") -- 1365
				dialognode.setcontent("您快回来吧！我们发现越来越多的研究员不认识□了！还有很多普通人，他们看不到□字，也不记得□！") -- 1366
				sleep(1.5) -- 1368
				canskip = true -- 1370
				wait(function() -- 1371
					return skip -- 1372
				end) -- 1371
				skip = false -- 1374
				canskip = false -- 1374
				dialognode.setname("云忆") -- 1376
				dialognode.setcontent("别慌！我会尽快回去。") -- 1377
				sleep(0.5) -- 1379
				canskip = true -- 1381
				wait(function() -- 1382
					return skip -- 1383
				end) -- 1382
				skip = false -- 1385
				canskip = false -- 1385
				local zhiying = Label(fontName, 50) -- 1387
				if zhiying then -- 1387
					zhiying.text = "转身回去" -- 1389
					zhiying.color = Color(4278190080) -- 1390
					zhiying:addTo(background2) -- 1391
					zhiying.position = Vec2(savefile.player_pos.x, savefile.player_pos.y + 280) -- 1392
					thread(function() -- 1393
						sleep(3) -- 1394
						zhiying:removeFromParent() -- 1395
					end) -- 1393
				end -- 1393
				npcprops.dianxiangan.pos = Vec2(12000, 210) -- 1399
				npcprops.linzhi.visible = true -- 1400
				local npcs = {} -- 1402
				for key, value in pairs(npcprops) do -- 1403
					local npc = Node() -- 1404
					npc.tag = tostring(value.tag) -- 1405
					npc.position = value.pos -- 1406
					npc.visible = value.visible -- 1407
					background2:addChild(npc) -- 1408
					npcs[#npcs + 1] = npc -- 1409
					playAnimation( -- 1410
						npc, -- 1410
						value.daiji, -- 1410
						0.4, -- 1410
						true, -- 1410
						false, -- 1410
						Size(175, 350) -- 1410
					) -- 1410
				end -- 1410
				dialognode.node.visible = false -- 1413
				canmove = true -- 1414
			end) -- 1317
		end -- 1317
	end -- 1243
	eButton = Button({ -- 1418
		x = 0, -- 1421
		y = 50, -- 1422
		width = 128, -- 1423
		height = 128, -- 1424
		onClick = eClick, -- 1425
		normalImage = "Image/部件/E.png", -- 1426
		pressImage = "Image/部件/E.png" -- 1427
	}) -- 1427
	eButton.node:gslot( -- 1429
		"Input.EUp", -- 1429
		function() -- 1429
			if eButton.node.visible then -- 1429
				eClick() -- 1431
			end -- 1431
		end -- 1429
	) -- 1429
	eButton.node.visible = false -- 1433
	eButton.node:addTo(root) -- 1434
	local function setbackgroundposition2() -- 1436
		background2.x = background2.width / 2 - designSize.width / 2 - (savefile.player_pos.x - designSize.width / 2 >= 0 and savefile.player_pos.x <= background2.width - designSize.width / 2 and savefile.player_pos.x - designSize.width / 2 or (savefile.player_pos.x - designSize.width / 2 < 0 and 0 or background2.width - designSize.width)) -- 1437
	end -- 1436
	setbackgroundposition2() -- 1439
	dialognode = Dialog({name = "", illustration = Illustration.wu}) -- 1441
	root:addChild(dialognode.node) -- 1445
	dialognode.node.order = 1 -- 1446
	player_node = Node() -- 1448
	player_node:addTo(background2) -- 1449
	player_node.position = Vec2(800, 210) -- 1450
	dialognode.node.visible = false -- 1452
	canmove = true -- 1453
	thread(function() -- 1455
		canmove = false -- 1456
		dialognode.node.visible = true -- 1456
		playAnimation( -- 1457
			player_node, -- 1457
			"Image/daiji", -- 1457
			0.4, -- 1457
			true, -- 1457
			false, -- 1457
			player_size -- 1457
		) -- 1457
		sleep(0.8) -- 1458
		dialognode.setcontent("站在这边，望着对面，仍然是那座断了的建筑。") -- 1460
		sleep(1) -- 1462
		canskip = true -- 1464
		wait(function() -- 1465
			return skip -- 1466
		end) -- 1465
		skip = false -- 1468
		canskip = false -- 1468
		dialognode.setcontent("青石的棱角在粼粼河水中沉默着，好像想说什么，却欲言又止。") -- 1470
		sleep(1.5) -- 1472
		canskip = true -- 1474
		wait(function() -- 1475
			return skip -- 1476
		end) -- 1475
		skip = false -- 1478
		canskip = false -- 1478
		dialognode.setcontent("一种难以言喻的、陌生的熟悉感涌上心头。") -- 1480
		sleep(1) -- 1482
		canskip = true -- 1484
		wait(function() -- 1485
			return skip -- 1486
		end) -- 1485
		skip = false -- 1488
		canskip = false -- 1488
		dialognode.node.visible = false -- 1490
		canmove = true -- 1491
	end) -- 1455
	playAnimation( -- 1494
		player_node, -- 1494
		"Image/scientist", -- 1494
		animatespeed, -- 1494
		true, -- 1494
		true, -- 1494
		player_size -- 1494
	) -- 1494
	player_state = {A = 0, D = 0, B = 0, TAB = 0} -- 1495
	laststate = {A = 0, D = 0, B = 0, TAB = 0} -- 1501
	laststate = __TS__ObjectAssign({}, player_state) -- 1508
	local faceto = true -- 1509
	local tl3 = threadLoop(function() -- 1510
		if laststate ~= player_state then -- 1510
			if laststate.D - laststate.A ~= player_state.D - player_state.A then -- 1510
				if player_state.D - player_state.A == 0 then -- 1510
					playAnimation( -- 1514
						player_node, -- 1514
						"Image/daiji", -- 1514
						animatespeed, -- 1514
						true, -- 1514
						faceto, -- 1514
						player_size -- 1514
					) -- 1514
				elseif player_state.D - player_state.A == -1 then -- 1514
					faceto = false -- 1516
					playAnimation( -- 1517
						player_node, -- 1517
						"Image/scientist", -- 1517
						animatespeed, -- 1517
						true, -- 1517
						false, -- 1517
						player_size -- 1517
					) -- 1517
				elseif player_state.D - player_state.A == 1 then -- 1517
					faceto = true -- 1519
					playAnimation( -- 1520
						player_node, -- 1520
						"Image/scientist", -- 1520
						animatespeed, -- 1520
						true, -- 1520
						true, -- 1520
						player_size -- 1520
					) -- 1520
				end -- 1520
			end -- 1520
			laststate = __TS__ObjectAssign({}, player_state) -- 1524
		end -- 1524
		local evisible = false -- 1526
		if canmove then -- 1526
			for key, value in pairs(npcprops) do -- 1528
				if value.visible and value.tag ~= -1 and savefile.player_pos.x > value.pos.x - value.size / 2 and savefile.player_pos.x < value.pos.x + value.size / 2 then -- 1528
					eButton.node.visible = true -- 1530
					etag = value.tag -- 1531
					evisible = true -- 1532
				end -- 1532
			end -- 1532
			if not evisible then -- 1532
				eButton.node.visible = false -- 1536
				etag = -1 -- 1537
			end -- 1537
		end -- 1537
		sleep(0.2) -- 1540
		return nowpage ~= 3 -- 1541
	end) -- 1510
	local tl4 = threadLoop(function() -- 1543
		savefile.player_pos = savefile.player_pos:add(Vec2((player_state.D - player_state.A) * walkspeed, 0)):clamp(min_player_pos, max_player_pos) -- 1544
		player_node.x = savefile.player_pos.x -- 1547
		setbackgroundposition2() -- 1548
		sleep(0.01) -- 1549
		return nowpage ~= 3 -- 1550
	end) -- 1543
	root:gslot( -- 1553
		"Input.Space", -- 1553
		function() -- 1553
			skip = canskip -- 1554
		end -- 1553
	) -- 1553
	root:gslot( -- 1557
		"Input.LeftDown", -- 1557
		function() -- 1557
			if canmove then -- 1557
				player_state.A = 1 -- 1559
			end -- 1559
		end -- 1557
	) -- 1557
	root:gslot( -- 1562
		"Input.RightDown", -- 1562
		function() -- 1562
			if canmove then -- 1562
				player_state.D = 1 -- 1564
			end -- 1564
		end -- 1562
	) -- 1562
	root:gslot( -- 1567
		"Input.LeftUp", -- 1567
		function() -- 1567
			if canmove then -- 1567
				player_state.A = 0 -- 1569
			end -- 1569
		end -- 1567
	) -- 1567
	root:gslot( -- 1572
		"Input.RightUp", -- 1572
		function() -- 1572
			if canmove then -- 1572
				player_state.D = 0 -- 1574
			end -- 1574
		end -- 1572
	) -- 1572
	root:onTapped(function() -- 1577
		skip = canskip -- 1578
	end) -- 1577
	return root -- 1580
end -- 1188
act_end = function() -- 1583
	savefile.act = 3 -- 1584
	saveManager:saveGame(nowslot, savefile) -- 1585
	Audio:stopStream(1) -- 1586
	Audio:playStream(resources.sounds["end"], true) -- 1587
	local root = Node() -- 1588
	thread(function() -- 1589
		appState.isCGing = true -- 1590
		Transition({root = Director.entry, time = 1, type = -1, waittime = 0}) -- 1591
		appState.isCGing = false -- 1597
	end) -- 1589
	thread(function() -- 1600
		local xinzhi = Sprite("Image/第一幕/zhi.png") -- 1601
		if xinzhi then -- 1601
			xinzhi.size = Size(600, 660) -- 1603
			xinzhi:onTapped(function() -- 1604
				skip = true -- 1605
			end) -- 1604
		end -- 1604
		local xincontent = Label(fontName, 30) -- 1609
		if xincontent then -- 1609
			xincontent.text = "    我看见——\n    很多年前，木头搭的通道被洪水冲走了。\n    于是，人们从山里运来青石，一块一块垒上去。\n    没有谁召集，但每个人都无声地劳动着。\n    新的就这样造好，连接了两岸的集市和人家。\n    我看见——\n    一群孩童嬉笑着跑过，又在青石板上不小心摔个跟头。\n    后面的大人慢悠悠地跟着，偶尔调侃一句“这里真该修了”。\n    往来的商贩总爱在顶上停下，稍事歇息后继续赶路。\n    而我，总是被稀奇的小玩意吸引，缠着父母买回家。\n    qiao，qiao，qiao……\n    原来，是桥啊。" -- 1611
			xincontent.textWidth = 500 -- 1612
			xincontent.color = Color(4278190080) -- 1613
			xincontent.alignment = "Left" -- 1614
		end -- 1614
		sleep(7) -- 1617
		canskip = true -- 1619
		wait(function() -- 1620
			sleep(0.1) -- 1620
			return skip -- 1620
		end) -- 1620
		skip = false -- 1621
		canskip = false -- 1621
		if xinzhi then -- 1621
			xinzhi:removeFromParent() -- 1623
		end -- 1623
		if xincontent then -- 1623
			xincontent:removeFromParent() -- 1625
		end -- 1625
		local dialognode = Dialog({name = "林知", illustration = Illustration.wu}) -- 1627
		root:addChild(dialognode.node) -- 1631
		dialognode.node.visible = true -- 1632
		dialognode.setcontent("所以现在最重要的，是阻止记忆断桥症的蔓延。") -- 1634
		sleep(1) -- 1636
		canskip = true -- 1638
		wait(function() -- 1639
			return skip -- 1640
		end) -- 1639
		skip = false -- 1642
		canskip = false -- 1642
		dialognode.setname("云忆") -- 1644
		dialognode.setcontent("这个断桥症……到底是什么？") -- 1645
		sleep(0.5) -- 1647
		canskip = true -- 1649
		wait(function() -- 1650
			return skip -- 1651
		end) -- 1650
		skip = false -- 1653
		canskip = false -- 1653
		dialognode.setname("林知") -- 1655
		dialognode.setcontent("说来话长。") -- 1656
		sleep(0.5) -- 1658
		canskip = true -- 1660
		wait(function() -- 1661
			return skip -- 1662
		end) -- 1661
		skip = false -- 1664
		canskip = false -- 1664
		dialognode.node.visible = false -- 1665
		local xinzhi1 = Sprite("Image/第一幕/zhi.png") -- 1668
		if xinzhi1 then -- 1668
			xinzhi1.size = Size(600, 660) -- 1670
			xinzhi1:onTapped(function() -- 1671
				skip = true -- 1672
			end) -- 1671
		end -- 1671
		local xincontent1 = Label(fontName, 30) -- 1676
		if xincontent1 then -- 1676
			xincontent1.text = "    在林知的讲述下，我终于得知，这次精神实验触及了人脑内的“桥”——连接集体潜意识的神经元。\n    而这个契机，让神经元觉醒了自主意识。\n    作为那座“原初之桥”，它最重要的使命，便是连接人们的潜意识，让人们得以互动、交流。\n    于是，原本如孤岛一般的人，终于，建立了联系。\n" -- 1678
			xincontent1.textWidth = 500 -- 1679
			xincontent1.color = Color(4278190080) -- 1680
			xincontent1.alignment = "Left" -- 1681
		end -- 1681
		sleep(5) -- 1684
		canskip = true -- 1686
		wait(function() -- 1687
			sleep(0.1) -- 1687
			return skip -- 1687
		end) -- 1687
		skip = false -- 1688
		canskip = false -- 1688
		if xincontent1 then -- 1688
			xincontent1.text = "    像海洋深处的鲸鱼，第一次接收到了相同的频率。\n    那种无法掩饰的激动与喜悦，成为了它存在的意义。\n    这时的它是欢喜的，因为它在人与人之间看到了无数的“桥”——亲人，朋友，恋人……\n    人们的关系越来越亲密，善意之“桥”不断拯救孤独的灵魂，原本冰冷的心越靠越近，于是人间温情就此孵化。" -- 1691
			xincontent1.textWidth = 500 -- 1692
			xincontent1.color = Color(4278190080) -- 1693
			xincontent1.alignment = "Left" -- 1694
		end -- 1694
		sleep(5) -- 1697
		canskip = true -- 1699
		wait(function() -- 1700
			sleep(0.1) -- 1700
			return skip -- 1700
		end) -- 1700
		skip = false -- 1701
		canskip = false -- 1701
		if xincontent1 then -- 1701
			xincontent1.text = "    但……它发现，恶意之桥出现了，并不断侵蚀着原本的‘桥’。\n    怀疑、背叛、误解……\n    渐渐地，那一座座微小的桥，无可奈何地崩塌了。\n    它……很痛苦，可它只能……眼睁睁看着，曾经志同道合的人们，一步步背道而驰。\n    似乎，这个世界正在变回原本的样子。\n     人们只不再关注曾经那样深刻的联系与羁绊——亦不愿再去呵护这些“桥”。" -- 1704
			xincontent1.textWidth = 500 -- 1705
			xincontent1.color = Color(4278190080) -- 1706
			xincontent1.alignment = "Left" -- 1707
		end -- 1707
		sleep(7) -- 1710
		canskip = true -- 1712
		wait(function() -- 1713
			sleep(0.1) -- 1713
			return skip -- 1713
		end) -- 1713
		skip = false -- 1714
		canskip = false -- 1714
		if xincontent1 then -- 1714
			xincontent1.text = "    就像……断桥镇年久失修的桥一样，这些‘桥’，塌了。而最初的神经元，在觉醒了自主意识后，最终决定……将自己分解，直到……人们重新珍视这来之不易的联系。\n    人们会患上‘记忆断桥症’，会忘记‘连接’与‘桥’的概念。最后，彻底变回与世隔绝的孤岛。" -- 1717
			xincontent1.textWidth = 500 -- 1718
			xincontent1.color = Color(4278190080) -- 1719
			xincontent1.alignment = "Left" -- 1720
		end -- 1720
		sleep(4) -- 1723
		canskip = true -- 1725
		wait(function() -- 1726
			sleep(0.1) -- 1726
			return skip -- 1726
		end) -- 1726
		skip = false -- 1727
		canskip = false -- 1727
		if xincontent1 then -- 1727
			xincontent1.text = "    我问林知，“那，要怎样才能恢复？”\n    \n    林知说，我要重新做一次实验，去寻找那座原初之桥。" -- 1730
			xincontent1.textWidth = 500 -- 1731
			xincontent1.color = Color(4278190080) -- 1732
			xincontent1.alignment = "Left" -- 1733
		end -- 1733
		sleep(2) -- 1736
		canskip = true -- 1738
		wait(function() -- 1739
			sleep(0.1) -- 1739
			return skip -- 1739
		end) -- 1739
		skip = false -- 1740
		canskip = false -- 1740
		if xincontent1 then -- 1740
			xincontent1.text = "    第二次精神连接实验，成功了。\n    我找到了那座原初之桥的碎片，而拼接的代价——\n    是我和林知以自身为媒介，合二为一，作为这个新世界的观察者与监督者，默默守护人世间一座座温暖的，桥。\n    \n    新的原初之桥存在于所有人的潜意识中，它不是木质的，也不是石质的，而是——\n    一座连接万物的云桥。" -- 1743
			xincontent1.textWidth = 500 -- 1744
			xincontent1.color = Color(4278190080) -- 1745
			xincontent1.alignment = "Left" -- 1746
		end -- 1746
		sleep(5) -- 1749
		canskip = true -- 1751
		wait(function() -- 1752
			sleep(0.1) -- 1752
			return skip -- 1752
		end) -- 1752
		skip = false -- 1753
		canskip = false -- 1753
		if xincontent1 then -- 1753
			xincontent1.text = "    我与林知，则是桥上飘过的第一朵云。\n    我们飘过断桥镇——\n    夕阳西下，人们自发聚集起来，再一次从山上搬下青石板，一点一点，将那座坍塌的断桥留下的空白填补起来。\n    从此，断桥镇啊，便改了名。\n    “云桥镇”。" -- 1756
			xincontent1.textWidth = 500 -- 1757
			xincontent1.color = Color(4278190080) -- 1758
			xincontent1.alignment = "Left" -- 1759
		end -- 1759
		sleep(5) -- 1762
		canskip = true -- 1764
		wait(function() -- 1765
			sleep(0.1) -- 1765
			return skip -- 1765
		end) -- 1765
		skip = false -- 1766
		canskip = false -- 1766
		if xincontent1 then -- 1766
			xincontent1.text = "    于是——\n    久违的笑声盘旋而上。\n    击掌庆贺的瞬间，一座座“桥”——\n    静悄悄地，跨过隔阂、跨过偏见，\n    带着温暖的光,向意识深处绵延而去。\n    如彩虹般绚烂，生生不息。\n    于是这世界不再是孤岛，亦不再冰冷——\n    岁月的余温，一如往昔。" -- 1769
			xincontent1.textWidth = 500 -- 1770
			xincontent1.color = Color(4278190080) -- 1771
			xincontent1.alignment = "Left" -- 1772
		end -- 1772
		sleep(5) -- 1775
		canskip = true -- 1777
		wait(function() -- 1778
			sleep(0.1) -- 1778
			return skip -- 1778
		end) -- 1778
		skip = false -- 1779
		canskip = false -- 1779
		if xincontent1 then -- 1779
			xincontent1.text = "    我叫云忆。\n    你或许不认识我，但——\n    你的意识深处，\n    在那座星光点点的桥上，\n    一定飘着，一朵云。\n    \n    当人与人之间的“桥”被忽视或摧毁，记忆与文明将随之断裂；唯有主动重建理解与信任，才能让联结生生不息。" -- 1782
			xincontent1.textWidth = 500 -- 1783
			xincontent1.color = Color(4278190080) -- 1784
			xincontent1.alignment = "Left" -- 1785
		end -- 1785
		sleep(4) -- 1788
		canskip = true -- 1790
		wait(function() -- 1791
			sleep(0.1) -- 1791
			return skip -- 1791
		end) -- 1791
		skip = false -- 1792
		canskip = false -- 1792
		if xinzhi1 then -- 1792
			xinzhi1:removeFromParent() -- 1795
		end -- 1795
		if xincontent1 then -- 1795
			xincontent1:removeFromParent() -- 1797
		end -- 1797
		local lb = Label(fontName, 40) -- 1799
		if lb then -- 1799
			lb.text = "感谢各位玩家的游玩！由于本小组水平有限，未能实现有意思的玩法，但我们小组尽全力为您带来最好的剧情阅读体验。未来，我们也希望继续努力，把我们最初的游戏玩法尝试实现出来，也欢迎玩家们提出宝贵意见。\n最后，感谢dora开发者提供的技术支持，感谢小组的每一个小伙伴！" -- 1801
			lb.textWidth = 800 -- 1802
		end -- 1802
	end) -- 1600
	root:gslot( -- 1806
		"Input.Space", -- 1806
		function() -- 1806
			skip = canskip -- 1807
		end -- 1806
	) -- 1806
	root:onTapped(function() -- 1809
		skip = canskip -- 1810
	end) -- 1809
	return root -- 1812
end -- 1583
updateViewSize() -- 1816
adjustWinSize() -- 1817
Director.entry:onAppChange(function(settingName) -- 1818
	if settingName == "Size" then -- 1818
		updateViewSize() -- 1820
	end -- 1820
end) -- 1818
StartUp() -- 1825
return ____exports -- 1825